%% heatmap图，但是heatmap图并不是彩色的
% 阵列参数
num_elements = 10;          % 天线元素数量
d_spacing = 0.5;            % 元素间距 (lambda)
theta = -pi/2:0.01:pi/2;    % 角度范围

% 计算阵列权重
weights = ones(1, num_elements);  % 均匀阵列

% 计算阵列因子
array_factor = zeros(size(theta));
for ii = 1:num_elements
    array_factor = array_factor + weights(ii) * exp(1i * (ii-1) * 2 * pi * d_spacing * sin(theta));
end

% 归一化阵列因子
array_factor = abs(array_factor) / max(abs(array_factor));

% 绘制截面图
plot(theta, array_factor, 'LineWidth', 2);
title('天线阵列辐射功率截面图');
xlabel('Theta (弧度)');
ylabel('归一化辐射功率');
grid on;

%%  远场

% 阵列参数
num_elements = 10;          % 天线元素数量
d_spacing = 0.5;            % 元素间距 (lambda)

% 网格范围
x_range = -5:0.1:5;
y_range = -5:0.1:5;

% 生成网格
[X, Y] = meshgrid(x_range, y_range);

% 计算每个点的信号强度
signal_strength = zeros(size(X));
for i = 1:numel(x_range)
    for j = 1:numel(y_range)
        % 计算每个点的阵列因子
        array_factor = 0;
        for k = 1:num_elements
            array_factor = array_factor + exp(1i * 2 * pi * d_spacing * (x_range(i) * cos(0) + y_range(j) * sin(0)));
        end
        % 计算信号强度（假设简单取绝对值）
        signal_strength(j, i) = abs(array_factor);
    end
end

% 绘制彩色图
figure;
imagesc(x_range, y_range, signal_strength);
title('xy平面信号强度图');
xlabel('X轴位置');
ylabel('Y轴位置');
colorbar;  % 添加颜色条


%% 近场  Fresnel近似

% 使得至少d = 50m内的用户处于近场，通信波长lambda = 0.1
% 阵列长度至少为 D = 1.58m
% 1.58 / 0.05 = 31.6
% 至少31.6个天线

% 阵列参数
num_elements = 32;          % 天线元素数量
d_spacing = 0.05;            % 元素间距 (lambda)
lambda = 0.1;                 % 波长
distance = 0;              % 天线到观察点的距离

% 网格范围
x_range = -25:0.1:25;
y_range = -25:0.1:25;

% 观察点相对于X轴的角度
theta_observation = atan2(y_range, x_range); % 观察点与X轴的角度

% 生成网格
[X, Y] = meshgrid(x_range, y_range);

% 计算每个点的信号强度
signal_strength = zeros(size(X));
for i = 1:numel(x_range)
    for j = 1:numel(y_range)
        % 计算每个点与观察点之间的距离
        r = sqrt((x_range(i))^2 + (y_range(j))^2 + distance^2);
        
        % 计算相位
        phase = exp(1i * 2 * pi * d_spacing * (X(i,j) * cos(theta_observation(j,i)) + Y(i,j) * sin(theta_observation(j,i)))) * exp(1i * 2 * pi * r / lambda);
        
        % 计算阵列因子
        array_factor = 0;
        for k = 1:num_elements
            array_factor = array_factor + phase;
        end
        
        % 计算信号强度（假设简单取绝对值）
        signal_strength(j, i) = abs(array_factor);
    end
end

% 绘制彩色图
figure;
imagesc(x_range, y_range, signal_strength);
title('xy平面近场信号强度图');
xlabel('X轴位置');
ylabel('Y轴位置');
colorbar;  % 添加颜色条




